home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / machserver / 1.098 / Include / lfsDesc.h < prev    next >
C/C++ Source or Header  |  1990-10-19  |  3KB  |  78 lines

  1. /*
  2.  * lfsDesc.h --
  3.  *
  4.  *    Declarations of disk resident format of the LFS file descriptors.
  5.  *
  6.  * Copyright 1989 Regents of the University of California
  7.  * Permission to use, copy, modify, and distribute this
  8.  * software and its documentation for any purpose and without
  9.  * fee is hereby granted, provided that the above copyright
  10.  * notice appear in all copies.  The University of California
  11.  * makes no representations about the suitability of this
  12.  * software for any purpose.  It is provided "as is" without
  13.  * express or implied warranty.
  14.  *
  15.  * $Header: /sprite/src/kernel/lfs/RCS/lfsDesc.h,v 1.3 90/10/19 17:22:34 mendel Exp $ SPRITE (Berkeley)
  16.  */
  17.  
  18. #ifndef _LFSDESC
  19. #define _LFSDESC
  20. #ifdef KERNEL
  21. #include <fsdm.h>
  22. #else
  23. #include <kernel/fsdm.h>
  24. #endif
  25.  
  26. /*
  27.  * Format of disk address.
  28.  */
  29.  
  30. #ifndef LFS_USE_DISK_ADDR_STRUCT
  31. typedef int LfsDiskAddr;
  32.  
  33. #define    LfsSetNilDiskAddr(diskAddrPtr) ((*(diskAddrPtr)) = FSDM_NIL_INDEX)
  34. #define    LfsIsNilDiskAddr(diskAddr) ((diskAddr) == FSDM_NIL_INDEX)
  35. #define    LfsIsNullDiskAddr(diskAddr) ((diskAddr) == 0)
  36. #define    LfsSameDiskAddr(diskAddrA, diskAddrB) ((diskAddrA) == (diskAddrB))
  37. #define    LfsDiskAddrToOffset(diskAddr)    (diskAddr)
  38. #define    LfsDiskAddrPlusOffset(diskAddr,offset, newDiskAddrPtr) \
  39.         ((*(newDiskAddrPtr)) = (diskAddr) + (offset))
  40. #define    LfsOffsetToDiskAddr(offset, diskAddrPtr) ((*(diskAddrPtr)) = (offset))
  41. #define    LfsDiskAddrInRange(diskAddr, size, startAddr, endAddr) \
  42.     (((diskAddr) >= (startAddr)) && ((diskAddr) + (size) < (endAddr)))
  43. #define LfsDiskAddrOffset(diskAddrA, diskAddrB) ((diskAddrA) - (diskAddrB))
  44. #else /* LFS_USE_DISK_ADDR_STRUCT */
  45. typedef struct LfsDiskAddr {
  46.     int offset;
  47. } LfsDiskAddr;
  48. #define    LfsSetNilDiskAddr(diskAddrPtr) ((diskAddrPtr)->offset = FSDM_NIL_INDEX)
  49. #define    LfsIsNilDiskAddr(diskAddr) ((diskAddr).offset == FSDM_NIL_INDEX)
  50. #define    LfsIsNullDiskAddr(diskAddr) ((diskAddr).offset == 0)
  51. #define    LfsSameDiskAddr(diskAddrA, diskAddrB) \
  52.         ((diskAddrA).offset == (diskAddrB).offset)
  53. #define    LfsDiskAddrToOffset(diskAddr)    ((diskAddr).offset)
  54. #define    LfsDiskAddrPlusOffset(diskAddr,blockOffset, newDiskAddrPtr) \
  55.         (((newDiskAddrPtr)->offset) = (diskAddr).offset + (blockOffset))
  56. #define    LfsOffsetToDiskAddr(blockOffset, diskAddrPtr) \
  57.         (((diskAddrPtr)->offset) = (blockOffset))
  58. #define    LfsDiskAddrInRange(diskAddr, size, startAddr, endAddr) \
  59.     (((diskAddr).offset >= (startAddr).offset) && \
  60.         ((diskAddr).offset + (size) < (endAddr).offset))
  61. #define LfsDiskAddrOffset(diskAddrA, diskAddrB) \
  62.     ((diskAddrA).offset - (diskAddrB).offset)
  63. #endif /* LFS_USE_DISK_ADDR_STRUCT */
  64. /*
  65.  * The disk resident format an LFS descriptor. 
  66.  */
  67. typedef struct LfsFileDescriptor {
  68.     Fsdm_FileDescriptor      common;
  69.     int      fileNumber;    /* File number that is descriptor  belongs too. */
  70.     LfsDiskAddr      prevDiskAddr; /* The previous disk block address of
  71.                      * this file descriptors. */
  72. } LfsFileDescriptor;
  73.  
  74. #define    LFS_FILE_DESC_SIZE    128
  75.  
  76. #endif /* _LFSDESC */
  77.  
  78.